﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Contract.Business.Process;
using Contract.Business.Entity;
using Contract.Business.Filter;

namespace Fast.Presentation.WinForms.Relatórios
{
    public partial class FrmRptProduto : Form
    {
        public FrmRptProduto()
        {
            InitializeComponent();
        }

        public FEProduto filtro;

        private void FrmRptVenda_Load(object sender, EventArgs e)
        {
            try
            {
                BPProduto produtoProcess = new BPProduto();

                List<BEProduto> produtos = produtoProcess.ObterTodos(filtro);
                if (produtos == null || produtos.Count == 0)
                {
                    Utilidades.ExibirMensagem("Nenhum produto encontrado.");
                    this.Close();
                }
                else
                {
                    BPGrupo processGrupo = new BPGrupo();
                    List<BEGrupo> grupos = processGrupo.ObterTodos(new FEGrupo());

                    BPSubGrupo processSubGrupo = new BPSubGrupo();
                    List<BESubGrupo> subGrupos = processSubGrupo.ObterTodos(new FESubGrupo());

                    dsProdutoRpt source = new dsProdutoRpt();

                    foreach (BEProduto item in produtos)
                    {
                        DataRow row = source.Tables[0].NewRow();
                        row["Codigo"] = item.Codigo;
                        row["Ativo"] = item.Ativo ? "Sim" : "Não";
                        row["Descricao"] = item.Descricao;
                        row["Grupo"] = grupos.Single(q => q.Codigo.Equals(item.SubGrupo.CodigoGrupo));
                        row["SubGrupo"] = subGrupos.Single(q => q.Codigo.Equals(item.CodigoSubGrupo));

                        source.Tables[0].Rows.Add(row);
                    }

                    rptProduto1.SetDataSource(source);
                    rptProduto1.Refresh();

                    crystalReportViewer1.ReportSource = rptProduto1;
                }
            }
            catch (Exception ex)
            {
                Utilidades.LogarError(ex);
                this.Close();
            }
        }
    }
}
